package com.zpb.framework.utils;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.HashSet;
import java.util.Set;

public class ImageChecker {
    // 定义常见图片格式的扩展名集合（不区分大小写）
    private static final Set<String> IMAGE_EXTENSIONS = new HashSet<>();
    
    static {
        // 初始化常见图片扩展名
        IMAGE_EXTENSIONS.add("jpg");
        IMAGE_EXTENSIONS.add("jpeg");
        IMAGE_EXTENSIONS.add("png");
        IMAGE_EXTENSIONS.add("gif");
        IMAGE_EXTENSIONS.add("bmp");
        IMAGE_EXTENSIONS.add("webp");
        IMAGE_EXTENSIONS.add("tiff");
        IMAGE_EXTENSIONS.add("svg");
    }
    
    /**
     * 通过文件扩展名判断是否为图片
     * @param file 待判断的文件
     * @return 是图片返回true，否则返回false
     */
    public static boolean isImage(MultipartFile file) {
        // 获取原始文件名
        String originalFilename = file.getOriginalFilename();

        if (file == null) {
            return false;
        }
        

        int dotIndex = originalFilename.lastIndexOf(".");
        if (dotIndex == -1 || dotIndex == originalFilename.length() - 1) {
            // 没有扩展名或扩展名为空（如"file."）
            return false;
        }
        
        // 获取扩展名并转为小写
        // 根据文件名判断类型
        String extension = originalFilename.substring(dotIndex + 1).toLowerCase();
        return IMAGE_EXTENSIONS.contains(extension);
    }
}
